iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
Software Development

Rails 開發,每日一套件介紹! 系列 第 23

Day 23: 每叮每當,定期任務管理 - Whenever

  • 分享至 

  • xImage
  •  

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
每日一套件的第 23 天,請跟著我一起認識 Rails 開發好用的 30 個套件,建立出自己的常用套件庫吧!

Day 23: Whenever

Whenever 跟之前的 Sidekiq 一樣,都是我先前想介紹很久的套件,他們都是專案中後期可以搭配使用到的套件。但對於新手來說,都需要先研究很多內容。所以我放在蠻後面才來講。

Whenever 就如同它的名字,主要功能是處理定期任務和分配任務執行時間。它可以讓你在 Rails 中簡單設定 cron ,而不需要親自手寫 cron 語法。恩~就是這裡開始就要超展開囉~

首先,什麼是 Cron ?

Cron 是一個 Deamon,是一款在 UNIX-like 作業系統下(ex. Linux),基於時間做任務管理的系統。讓使用者可以透過 cron 在固定時間、日期、不同間隔,執行定期任務(可以是命令或指令)。

再來,什麼是 Deamon ?

Deamon 可以理解就是背景常駐程式,是一種在 UNIX-like 作業系統下,它會在背景悄悄運作,不在使用者的直接控制下,等待特定事件或條件發生時啟動。

UNIX-like ?


這邊又要先講:什麼是 UNIX ?

UNIX 是一種作業系統,是一個多使用者、多工作業系統,支援多種處理器架構,按照作業系統的分類,屬於分時作業系統。

所以 UNIX-like 是?

UNIX-like 中文翻作 "類UNIX",個人覺得翻的還是有點不到位,但大概就是這個意思。
指各種 UNIX 的衍生系統,有的是自由軟體,有的是私有軟體,但都相當程度地繼承了原始 UNIX 的特性,有許多相似處,並且都在一定程度上遵守 POSIX 規範。

那...什麼是 POSIX ?

Portable Operating System Interface,縮寫為 POSIX,中文譯做 "可移植作業系統介面"。

哈哈哈,我們不要再無限上綱下去了,這樣會沒完沒了。
大家有興趣再自己追查下去,我自己的待讀清單,也已經是多到炸裂的狀態。


總而言之,Whenever 就是:

使用 Whenever,你可以更容易地安排定期任務,例如備份資料、發送 email 通知、清理 log 文件等。

安裝與使用:

起手式~

$ bundle add whenever

接著,在專案資料夾底下,終端機執行。

$ bundle exec wheneverize .

這個指令會在根目錄中產生一個 schedule.rb,它就是的定期任務的設定檔。

例如,要每天執行一次任務,你可以這樣寫:

every 1.day, at: '4:30 am' do
  runner 'MyModel.my_method'
end

表示每天 4:30 am 會執行 MyModel.my_method 的方法。

every 1.day, at: '4:30 am' do
  runner '鐵人賽.發文'
end

這樣大家就更懂了吧。

還可以定義更複雜的定期任務,包括每小時、每週、每月等不同的間隔頻率。
當設定完了定期任務後,執行這個命令將它轉為 cron 作業:

$ whenever --update-crontab

這就會把你的定期任務加到系統的 **cron **表中,使系統按照你的設定自動運作,超方便。

Whenever 是一個非常有趣的工具,大家可以自己玩玩看。
我們明天見!


上一篇
Day 22: 改善用戶體驗的瀏覽器檢測工具 - Browser
下一篇
Day 24: 端對端測試的水豚君 - Capybara
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言